In [1]:
from keras.datasets import imdb
from keras.preprocessing.sequence import pad_sequences
from keras.models import Sequential
from keras.layers import Embedding, LSTM, Dense
In [2]:
# Number of words to consider as features
max_features = 10000
# Cut texts after this number of words
maxlen = 500
In [3]:
# Load data
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=max_features)
In [4]:
# Reverse sequences
x_train = [x[::-1] for x in x_train]
x_test = [x[::-1] for x in x_test]
In [6]:
x_train[0]
Out[6]:
In [7]:
# Sequence padding
x_train = pad_sequences(x_train, maxlen = maxlen)
x_test = pad_sequences(x_test, maxlen = maxlen)
In [8]:
model = Sequential()
model.add(Embedding(input_dim = max_features, output_dim = 128))
model.add(LSTM(units = 32))
model.add(Dense(units = 1, activation = 'sigmoid'))
model.compile(optimizer = 'rmsprop',
loss = 'binary_crossentropy',
metrics = ['acc'])
history = model.fit(x = x_train,
y = y_train,
epochs = 10,
batch_size = 128,
validation_split = 0.2)
In [9]:
# Clearning the session
from keras import backend as K
K.clear_session()
In [10]:
from keras.layers import Bidirectional
In [11]:
model = Sequential()
model.add(Embedding(input_dim = max_features, output_dim = 32))
model.add(Bidirectional(LSTM(units = 32)))
model.add(Dense(units = 1, activation='sigmoid'))
model.compile(optimizer = 'rmsprop',
loss = 'binary_crossentropy',
metrics = ['acc'])
history = model.fit(x = x_train,
y = y_train,
epochs = 10,
batch_size = 128,
validation_split = 0.2)